#pragma once
#ifndef TEXTURE_H_
#define TEXTURE_H_

#include "baseobject.h"
#include "commoninclude.h"
#include "dimension.h"

namespace EPOC
{
	class GraphicsManager;

	class Texture : public BaseObject
	{
	public:

	//con-/destructors
		Texture();
		Texture(class GraphicsManager *pGraphicsManager);
		virtual ~Texture();

		virtual void Cleanup();
		virtual bool Initialize(std::string sName, std::string sFilePath, bool bExclusive = false);
		virtual bool Initialize(std::string sName, bool bExclusive = false);

		virtual bool UpdateTexture() { return true;}

	// public helper methods
		inline std::string GetName() { return m_sName;}
		inline std::string GetFilePath() { return m_sFilePath;}
		inline bool IsExclusive() { return m_bExclusive;}
		inline void SetDimension( Dimension2D *pDim) { m_vDimension = *pDim;}
		inline void SetDimension( int nHeight, int nWidth) { m_vDimension.m_nHeight = nHeight; m_vDimension.m_nWidth = nWidth;}
		inline Dimension2D* GetDimension() { return &m_vDimension;}

		inline void SetSDLSurface(SDL_Surface *pSDLSurface)	{ m_pSDLSurface = pSDLSurface;}
		inline SDL_Surface* GetSDLSurface() { return m_pSDLSurface;}

		
	// protected members
	protected:
		bool m_bExclusive;

		std::string m_sName;
		std::string m_sFilePath;
		
		Dimension2D m_vDimension;
		SDL_Surface *m_pSDLSurface;		
		GraphicsManager *m_pGraphicsManager;
	
	}; // class Texture
}; // namespace EPOC
#endif